home *** CD-ROM | disk | FTP | other *** search
- /* Better-C
-
- Object-oriented Window managenment library demo
-
- Overlapping windows, pop-up menus, pop-up prompts, and
- general video/keyboard functions
-
- Remarks
-
- Demo also serves as unit test for module
-
- See window.doc for full interface documentation
-
- */
-
-
-
-
- #define UNIT_TEST
-
- #include <stdlib.h>
-
- #include "\better-c\window.d"
-
- #ifdef UNIT_TEST
-
- /* Better-C Natural Language delimiters */
-
- #define begin {
- #define begin_while {
- #define begin_if {
- #define begin_else {
- #define begin_loop {
- #define begin_for {
- #define begin_switch {
- #define begin_function {
- #define begin_main {
-
- #define end }
- #define end_while }
- #define end_if }
- #define end_else }
- #define end_loop }
- #define end_for }
- #define end_switch }
- #define end_function }
- #define end_main }
-
- #define Window_title "OOP Window Management Library Demo. Better-C Example."
- #define Window_copyright "Copyright (c) 1989, Silico-Magnetic Intelligence"
- #define SMI_address " 24 Jean Lane, Chestnut Ridge, NY 10952"
- #define SMI_phone " 914 426-2610"
- #define Better_C_title "Better-C. Methodology and Program Generator."
- #define Better_C_motto "Double Your Productivity or Your Money Back!"
-
- #define Description_1 "Each window object is defined by a data structure and "
- #define Description_2 "operations such as put, remove, etc."
- #define Description_3 "Source code of OOP Window library is part of Better-C."
- #define Description_4 "Better-C is priced at $98.00"
- #define Description_5 " with Top-Down Designer $169.00"
- #define Description_6 "Press Enter to step through the demo! "
-
-
- #define Wdw_max 10
- #define Line_len 80
- #define Translate_steps 5
- #define Hor_translate 30
-
- #define Demo_dr_0 0
- #define Demo_dc_0 0
- #define Demo_rows_0 24
- #define Demo_cols_0 79
- #define Fill_0 249
-
- #define Demo_dr_1 10
- #define Demo_dc_1 20
- #define Demo_rows_1 10
- #define Demo_cols_1 50
-
- #define Demo_dr_2 12
- #define Demo_dc_2 5
- #define Demo_rows_2 8
- #define Demo_cols_2 60
-
-
- #define Demo_brdr_attr 12
- #define Demo_back_attr 6
- #define Text_attr 2
-
- #define R_offset 4
- #define C_offset 8
- #define R_pos 1
- #define C_pos 15
-
- #define Pop_row 20
- #define Pop_col 6
- #define Pop_message "Pop-up prompt for easy key entry"
- #define Pop_length 20
- #define Pop_menu_row 10
- #define Pop_menu_col 30
- #define Pop_menu_title "Pop-up Menus Are Great!"
- #define Pop_menu_choices "Edit|Save|Load|Review|Quit"
- #define Scroll_message " Scrolling windows "
-
- #define Count_down_stop 14
- #define Corner_row_max 12
- #define Corner_col_max 49
- #define Finale_loop 100
- #define Finale_row 12
- #define Finale_col 10
- #define Finale_message "Finale of objects about to commence.... Hold down <enter>."
- #define Count_down_pattern " End of demo --> %d "
- #define Count_down_row 22
- #define Count_down_col 31
- #define Bottom_line 25
-
-
- #define Object_indication " Object %d "
- #define Number_envelope " %d "
- #define R_1 3
- #define R_2 5
- #define R_3 6
- #define R_4 8
- #define R_5 10
- #define R_6 11
- #define R_7 13
- #define R_8 14
- #define R_9 16
- #define R_10 18
- #define R_11 19
- #define R_12 22
-
-
- #define Counter_show 777
- #define Counter_row 6
- #define Counter_col 16
-
- #define Col 7
- #define Space 32
- #define No_of_colors 8
-
-
- void wdw_demo_object_message( int);
- void wdw_test();
-
-
- void main() begin_main wdw_test(); end_main
-
- void wdw_test()
- begin_function
- char ss[ Line_len];
- int window[ Wdw_max], number, i, j, k;
- int random_row, random_col, attribute;
-
- handle_start();
- wdw_start();
- clear_screen();
- cursor_off();
- window[0] = wdw_open();
- if( mono() ) /* used as default several times */
- attribute = Black On White;
- else
- attribute = Yellow On Blue;
-
- /* Display demo title page */
- wdw_init ( window[0], Demo_rows_0, Demo_cols_0);
- wdw_init_style ( window[0], Double_border, Demo_brdr_attr,
- Demo_back_attr, 0);
- wdw_init_position( window[0], Demo_dr_0, Demo_dc_0);
-
- wdw_put (window[0]);
- wdw_demo_object_message( window[0] );
- wdw_display (window[0], R_1, Col, Window_title, Text_attr);
- wdw_display (window[0], R_2, Col, Window_copyright, Text_attr);
- wdw_display (window[0], R_3, Col, SMI_address, Text_attr);
- wdw_display (window[0], R_4, Col, SMI_phone, Text_attr);
- wdw_display (window[0], R_5, Col, Better_C_title, Text_attr);
- wdw_display (window[0], R_6, Col, Better_C_motto, Text_attr);
- wdw_display (window[0], R_7, Col, Description_1, Text_attr);
- wdw_display (window[0], R_8, Col, Description_2, Text_attr);
- wdw_display (window[0], R_9, Col, Description_3, Yellow );
- wdw_display (window[0], R_10, Col, Description_4, Hi_red );
- wdw_display (window[0], R_11, Col, Description_5, Hi_red );
- wdw_display (window[0], R_12, Col, Description_6, Text_attr);
- getch();
-
- /* Pop up prompt demo */
- pop_up_prompt( Pop_row, Pop_col, Pop_length, Green,
- Yellow, Cyan, Pop_message, ss);
- display( Pop_row, Pop_col, ss, attribute);
- cursor(1, 1);
- getch();
-
- /* Pop up menu demo */
- k = pop_up_menu( Pop_menu_row, Pop_menu_col,
- Hi_red, Cyan, attribute,
- Pop_menu_title, Pop_menu_choices);
- sprintf( ss, Number_envelope, k);
- display( Pop_row + 1, Pop_col, ss, attribute);
- getch();
- cursor_off();
-
- /* Nest overlapping windows */
- for (i = 1; i < Wdw_max; i++)
- begin_for
- window[i] = wdw_open();
- wdw_init ( window[i], R_offset + i, C_offset + 3*i);
- wdw_init_style ( window[i], (i % 4), i,
- i % No_of_colors + 1, 0 );
- wdw_init_position( window[i], R_pos+i, C_pos + 2 * i);
- wdw_fill (window[i], 96+i);
- wdw_put (window[i]);
- wdw_demo_object_message( window[i] );
- getch();
- end_for
-
- /* run up a counter in last window */
- j = Wdw_max - 1;
- for (i = 0; i <= Counter_show; i++)
- begin_for
- sprintf( ss, Number_envelope, i);
- wdw_display( window[j], Counter_row, Counter_col, ss,
- attribute);
- end_for
-
- keyboard_flush();
- /* scroll down/up last window */
- wdw_scroll_down( window[j], Scroll_message );
- getch();
- wdw_scroll_up_routine( window[j] );
- wdw_refresh( window[j]);
- getch();
-
- /* translate last window */
- for (i = 1; i <= Translate_steps; i++)
- begin_for
- wdw_remove( window[j] );
- wdw_init_position( window[j], R_pos+j - i, C_pos + 2 * j + 2 * i);
- wdw_put (window[j]);
- getch();
- end_for
-
- /* translate last window at full speed */
- for (i = 1; i <= Hor_translate; i++)
- begin_for
- wdw_remove( window[j] );
- wdw_init_position( window[j], R_pos+j - Translate_steps,
- C_pos + 2 * j - i);
- wdw_put (window[j]);
- end_for
- getch();
-
-
- /* Remove them */
-
- for (i = Wdw_max-1; i >= 0; i--)
- begin_for
- wdw_remove( window[i] );
- getch();
- end_for
-
- /* Big finale */
- clear_screen();
- display( Finale_row, Finale_col, Finale_message, Yellow On Black);
- getch();
- for ( k = 0; k < Finale_loop; k++)
- begin_for
- j = (k % (Wdw_max-2)) + 1;
- random_row = random ( Corner_row_max) + 1;
- random_col = random ( Corner_col_max) + 1;
- wdw_init_position( window[j], random_row, random_col);
- wdw_put( window[j] );
- getch();
- end_for
-
- /* End of show, make user release the keyboard */
- keyboard_flush();
- wdw_fill_row( window[0], R_12, Space);
- wdw_put(window[0]);
- for (i = 0; i <= Count_down_stop; i++)
- begin_function
- sprintf( ss, Count_down_pattern, Count_down_stop - i);
- display( Count_down_row, Count_down_col, ss, Blue On Red);
- getch();
- end_function
- clear_screen();
-
- /* Close them */
- for (i = Wdw_max-1; i >= 0; i--)
- wdw_close( window[i]);
- cursor_on();
- wdw_end();
- handle_end();
-
- end_function
-
- void wdw_demo_object_message( int handle)
- begin_function
- char ss[ Line_len];
- sprintf( ss, Object_indication, handle);
- wdw_display (handle, 1, 1, ss, Text_attr);
- end_function
-
- #endif
-
- #undef UNIT_TEST
-
-